A data processing system may include multiple computing devices of various types and multiple memory resources of different types. For example, a system may include dynamic random-access memory (DRAM), a block device, a remote direct memory access (RDMA) appliance, memory located on a hardware accelerator and other types of volatile and non-volatile memory. Memory and other resources within the data processing system are addressed by a system address space, while each memory device is addressed by a physical address space.
The mapping between a system address and a corresponding physical address may be performed statically, software calls to an operating system, or through hardware caching of the software mediated translation process. Such approaches do not provide optimal use of memory, particularly when memory resources are shared between multiple processing cores or multiple processes and when memory resources have different characteristics.